package br.com.lh.urabuilder.util
{
	import flash.utils.describeType;
	import flash.utils.getQualifiedClassName;
	import flash.xml.XMLDocument;
	
	import mx.collections.Sort;
	import mx.collections.SortField;
	import mx.collections.XMLListCollection;
	import mx.rpc.xml.SimpleXMLDecoder;
	
	public class XMLUtils
	{
		public function XMLUtils()
		{
		}
		
		public static function sortByName(col:XMLListCollection):void{
            var s:Sort = new Sort();
            s.fields = [new SortField("@name")];
            col.sort = s;
            col.refresh();
        }

		
//		public static function toXMLString(obj:Object):String{
//
//		var x:XML = describeType(obj);
//		var xl:XMLList = x..variable;
//		var xmlStr:String = "";
//		xmlStr ="<object type=\""+ getQualifiedClassName(obj)
//		+"\">\r";
//		
//		for each(var n:XML in xl){
//		
//		xmlStr += "<variable name=\"" +
//		n.@name.toString() + "\" type=\"" + n.@type.toString() +
//		"\">";
//		xmlStr += obj[n.@name.toString()].toString();
//		xmlStr += "</variable>\r";
//		
//		}
//		
//		xmlStr += "</object>";
//		return xmlStr;
//
//		} 
//        
//        public function xmlToObject(xml:XMLList):Object {
//                /* Convert XMLNode to XMLDocument. */
//                var xmlDoc:XMLDocument = new XMLDocument(xml);
//                var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true);
//                var resultObj:Object = decoder.decodeXML(xmlDoc);
//				return resultObj;
//         }
         
//         public static function toXMLString(xmlObj:XML):String{
//            var output:String;
//            var spacer :String = "\t";
//            var xml_str = xmlObj.toString();
//            var open, closed, tabs, node_str, eol, ts, last_closed;
//            output = ""; eol=""; tabs = 0;
//            open = xml_str.indexOf("<", 0);
//            var tab_next = false;
//                var i = 0;
//                while (open != undefined && open != -1) {
//                    if (open != -1) {
//                        closed = xml_str.indexOf(">", open+1);
//                        node_str = xml_str.substring(open, closed+1);
//                        if (tab_next) {
//                            tabs++;
//                            tab_next = false;
//                        }
//                        if (node_str.indexOf("/") == 1) {
//                            tabs--;
//                        } else if (node_str.lastIndexOf("/") != node_str.length-2) {
//                            tab_next = true;
//                        }
//                        ts = "";
//                        for (var j = 0; j<tabs; j++) {
//                            ts += spacer;
//                        }
//                        if (open == last_closed+1) {
//                            eol = "\n"+ts;
//                        } else if (open>0) {                       
//                            eol = xml_str.substring(last_closed+1, open);
//                        }
//                        output += eol+node_str;
//                    }
//                    open = xml_str.indexOf("<", open+1);
//                    last_closed = closed;
//                }
//            return output;
//        }
         
         
	}
}